#include <stdio.h>
#define DOTENV_IMPLEMENTATION
#include "dotenv.hol.h"  // 注意：修正文件名（原代码中的dotenv.hol.h可能是笔误）
#define DOTENV_EXT_IMPLEMENTATION
#include "dotenv_ext.h"

int main() {
    // 1. 混淆明文.env文件（生成.env.obf）
    dotenv_ext_result res = dotenv_obfuscate_file(
        ".env",        // 原始明文文件
        ".env.obf",    // 输出混淆文件
        "mysecret123"  // 加密密钥
    );
    if (res != DOTENV_EXT_SUCCESS) {
        printf("混淆失败，错误码: %d\n", res);
        return 1;
    }
    printf("混淆成功\n");

    // 2. 从明文.env加载变量到内存（供后续导出JSON）
    dotenv_load(0);  // 关键：加载明文.env到内存
    // 或者从混淆文件加载：
    // res = dotenv_load_from_obfuscated(".env.obf", "mysecret123", 0);
    // if (res != DOTENV_EXT_SUCCESS) {
    //     printf("加载混淆文件失败，错误码: %d\n", res);
    //     return 1;
    // }

    // 3. 导出内存中的变量为JSON（此时已有数据）
    res = dotenv_export_as_json("env.json");
    if (res == DOTENV_EXT_SUCCESS) {
        printf("已导出为env.json\n");
    } else {
        printf("JSON导出失败，错误码: %d\n", res);
    }

    // 4. （可选）反混淆文件恢复明文
    res = dotenv_deobfuscate_file(
        ".env.obf", 
        ".env.recovered", 
        "mysecret123"
    );
    if (res == DOTENV_EXT_SUCCESS) {
        printf("反混淆成功，恢复文件为.env.recovered\n");
    }

    dotenv_clear();
    return 0;
}